/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.knolle.lotes.gui;

import java.awt.Component;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JComponent;
import org.marcelo.agro.constantes.IConstantes;
import org.marcelo.agro.entidades.Lotes;
import org.marcelo.agro.core.api.ILotes;
import org.marcelo.comun.notificaciones.Notificaciones;
import org.openide.DialogDisplayer;
import org.openide.WizardDescriptor;
import org.openide.util.ImageUtilities;
import org.openide.util.Lookup;

/**
 *
 * @author marcelo
 * La idea de esta clase es la de poder editar un Objeto del tipo lote
 * mostrar el mismo visual panel que se utiliza para el wizard y luego gurdar la opcion seleccionada
 * 
 */
public final class EditarLote {
    
    private Lotes lote;
    private ILotes il = Lookup.getDefault().lookup(ILotes.class);
    public enum Modificacion {EDICION_OK, EDICION_NO_OK }

    public EditarLote(Lotes lote) {
        this.lote = lote;
    }
    
    public void show() {
        List<WizardDescriptor.Panel<WizardDescriptor>> panels = new ArrayList<WizardDescriptor.Panel<WizardDescriptor>>();
        panels.add(new LotesWizardPanel1(lote));
        String[] steps = new String[panels.size()];
        for (int i = 0; i < panels.size(); i++) {
            Component c = panels.get(i).getComponent();
            // Default step name to component name of panel.
            steps[i] = c.getName();
            if (c instanceof JComponent) { // assume Swing components
                JComponent jc = (JComponent) c;
                jc.putClientProperty(WizardDescriptor.PROP_CONTENT_SELECTED_INDEX, i);
                jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DATA, steps);
                jc.putClientProperty(WizardDescriptor.PROP_AUTO_WIZARD_STYLE, true);
                jc.putClientProperty(WizardDescriptor.PROP_CONTENT_DISPLAYED, true);
                jc.putClientProperty(WizardDescriptor.PROP_CONTENT_NUMBERED, true);
                
            }
        }
        WizardDescriptor wiz = new WizardDescriptor(new WizardDescriptor.ArrayIterator<WizardDescriptor>(panels));
        // {0} will be replaced by WizardDesriptor.Panel.getComponent().getName()
//        Aca cargar una imagen que pegue con el sistema
        wiz.putProperty(WizardDescriptor.PROP_IMAGE, ImageUtilities.loadImage("org/demo/wizard/banner.PNG", true));
        wiz.setTitleFormat(new MessageFormat("{0}"));
        wiz.setTitle("Editar lotes");
        if (DialogDisplayer.getDefault().notify(wiz) == WizardDescriptor.FINISH_OPTION) {
            // Aqui es donde se guardaran los datos, crear un objeto nuevo y setear los datos del wizard al objeto
            // Una vez seteado todo esto meter los datos en la base de datos
            Lotes nuevo = (Lotes) wiz.getProperty("lote");
//            Invocar al lookup para realizar el guardado
            il = Lookup.getDefault().lookup(ILotes.class);
            try {
                il.saveOrUpdate(nuevo);
                //lanzar el cambio de los elementos
            }
            catch (Exception excepcion){
                Notificaciones.showMessageBox(
                        Notificaciones.WARNING_MESSAGE, 
                        IConstantes.MENSAJE_ERROR_AL_GUARDAR + excepcion.toString()
                );
            }
            //se guardo con exito
        }
    }
    
    
}
